package com.gserver.game.plugin;

import java.util.EnumSet;

/**
 * 带有扩展点的插件接口
 * 
 * 
 * 
 * @param <E>
 *            扩展点的类型
 * @param <V>
 *            触发扩展点事件的对象类型
 */
public interface IPointPlugin<E extends Enum<E> & PluginPoint<?>, V> extends IPlugin {

	/**
	 * 触发插件的扩展点事件
	 * 
	 * @param point
	 *            扩展点的类型
	 * @param object
	 *            触发事件的对象
	 * @return
	 */
	public abstract boolean fire(E point, V object);

	/**
	 * 取得该插件关注的扩展点的集合
	 * 
	 * @return
	 */
	public abstract EnumSet<E> getPluginPoint();

}